# -*- coding: utf-8 -*-

'''
    autor: João Rebocho Nº 6035
    data: 12/10/2014
    obs: Trabalho Prático LP 2014/2015
'''


import matplotlib.pyplot as plt
import numpy as np

class Estatistica_Folha1():
    def __init__(self, ano, ipcGlobal, variacaoAnual, remuneracaoMinimaMensal, remuneracaoMaximaMensal, pib,
                 rendimentoNacionalBrutoPerCapita, rendimentoDisponivelBrutoPerCapita, remuneracaoPerCapitaAnual
                 , anoInicial, anoFinal):
        '''
        Construtor da classe Estatistica_Folha1
        ano - é uma lista e vou lá guardar os valores dos anos para as estatisticas 
        ipcGlobal - é uma lista e vou lá guardar os anos para as estatisticas 
        variacaoAnual - é uma lista e vou lá guardar os valores da variacaoAnual para as estatisticas 
        remuneracaoMinimaMensal - é uma lista e vou lá guardar os valores da remuneracaoMinimaMensal para as estatisticas 
        remuneracaoMaximaMensal - é uma lista e vou lá guardar os valores da remuneracaoMaximaMensal para as estatisticas 
        pib - é uma lista e vou lá guardar os valores do pib para as estatisticas        
        rendimentoNacionalBrutoPerCapita - é uma lista e vou lá guardar os valores do rendimentoNacionalBrutoPerCapita para as estatisticas 
        rendimentoDisponivelBrutoPerCapita - é uma lista e vou lá guardar os valores do rendimentoDisponivelBrutoPerCapita para as estatisticas 
        remuneracaoPerCapitaAnual - é uma lista e vou lá guardar os valores da remuneracaoPerCapitaAnual para as estatisticas 
        anoinicial - e uma variavel de tipo inteiro e vai indicar o ano inicial para 
                        as várias estatisticas(esta variavel pode assumir valores entre 0 e 36)
        anofinal - e uma variavel de tipo inteiro e vai indicar o ano final para 
                        as várias estatisticas (esta variavel pode assumir valores entre 0 e 36)
        
        '''
        self.ano = []; self.ipcGlobal = []; self.variacaoAnual = []; self.remuneracaoMinimaMensal = []
        self.remuneracaoMaximaMensal = []; self.pib = []; self.rendimentoNacionalBrutoPerCapita = []
        self.rendimentoDisponivelBrutoPerCapita = []; self.remuneracaoPerCapitaAnual = []
        self.anoInicial = anoInicial
        self.anoFinal = anoFinal
        
        #Guardo os valores nas respectivas variaveis
        self.ano.append(ano)
        self.ipcGlobal.append(ipcGlobal)
        self.variacaoAnual.append(ano)
        self.remuneracaoMinimaMensal.append(remuneracaoMinimaMensal)
        self.remuneracaoMaximaMensal.append(remuneracaoMaximaMensal)
        self.pib.append(pib)
        self.rendimentoNacionalBrutoPerCapita.append(rendimentoNacionalBrutoPerCapita)
        self.rendimentoDisponivelBrutoPerCapita.append(rendimentoDisponivelBrutoPerCapita)
        self.remuneracaoPerCapitaAnual.append(remuneracaoPerCapitaAnual)
        pass
    
    
    def estatistica_ipc_global(self, ipcGlobal, ano): 
        '''
        Neste metodo vou realizar o grafico para a estatistica ipc global. 
        ipcGlobal - nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao ipc global 
        ano -  nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao ano
        anoInicial - é uma variavel do tipo int e nela é guardado o primeiro ano a partir do qual se vai
        comecar a fazer a estatistica
        anoFinal - é uma variavel do tipo int e nela é guardado o ultimo ano a partir do qual se vai
        acabar de fazer o grafico da estatistica
        '''
        
        ipcGlobal1 = []
        anoInicial = input("Indique o ano inicial(0, 32):")
        # Na linha abaixo pergunto ao utilizador qual o ano final da estatistica
        # os valores que o utilizador pode introduzir podem variar entre 0, que corresponde ao ano 1977
        # e 36 que corresponde ao ano 2007
        anoFinal = input("Indique o ano final(0, 32):")
		# Na linha abaixo chamo a classe principal
        for x in range(anoInicial, anoFinal):
            ipcGlobal1.append(ipcGlobal[x])
            anoFinal = anoFinal + 1
        
    
        plt.title("Indice de Precos ao utilizador")
        plt.plot([ipcGlobal2 for ipcGlobal2 in ipcGlobal1])
        plt.xlabel("Ano")
        plt.ylabel("Indice de Precos ao utilizador")
        plt.show()
        
        
        pass
    def estatistica_variacao_anual(self, variacaoAnual, ano, anoInicial, anoFinal):
        '''
        Neste metodo vou realizar o grafico para a estatistica variacao anual. 
        variacaoAnual - nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao variacao anual.
        ano -  nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao ano.
        anoInicial - é uma variavel do tipo int e nela é guardado o primeiro ano a partir do qual se vai
        comecar a fazer a estatistica.
        anoFinal - é uma variavel do tipo int e nela é guardado o ultimo ano a partir do qual se vai
        acabar de fazer o grafico da estatistica.
        '''
        
        variacaoAnual1 = []
        anoInicial = 1
        for x in range(anoInicial, anoFinal):
            variacaoAnual1.append(variacaoAnual[x])
        
           
        plt.title("Indice de Variacao Anual")
        plt.plot([variacaoAnual2 for variacaoAnual2 in variacaoAnual1])
        plt.xlabel("Ano")
        plt.ylabel("Indice de Variacao Anual")
        plt.show()
        
       
        pass 
    
    def estatistica_remuneracao_Minima_Anual(self, remuneracaoMinimaMensal, ano, anoInicial, anoFinal):
        '''
        Neste metodo vou realizar o grafico para a remuneracao minima Mensal.
        remuneracaoMinimaMensal - nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao remuneracao minima anual. 
        ano -  nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao ano.
        anoInicial - é uma variavel do tipo int e nela é guardado o primeiro ano a partir do qual se vai
        comecar a fazer a estatistica.
        anoFinal - é uma variavel do tipo int e nela é guardado o ultimo ano a partir do qual se vai
        acabar de fazer o grafico da estatistica.
        '''
        remuneracaoMinimaMensal1 = []
        for x in range(anoInicial, anoFinal):
            remuneracaoMinimaMensal1.append(remuneracaoMinimaMensal[x])
        
        
        plt.title("Remuneracao Minima Mensal")
        plt.plot([remuneracaoMinimaMensal2 for remuneracaoMinimaMensal2 in remuneracaoMinimaMensal1])
        plt.xlabel("Ano")
        plt.ylabel("Remuneracao Minima Mensal")
        plt.show()
        
       
        pass
        
    def estatistica_remuneracao_Maxima_Anual(self, remuneracaoMaximaMensal, ano, anoInicial, anoFinal):
        '''
        Neste metodo vou realizar o grafico para a estatistica remuneracao maxima anual. 
        remuneracaoMaximaMensal - nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao remuneracao maxima anual.
        ano -  nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao ano.
        anoInicial - é uma variavel do tipo int e nela é guardado o primeiro ano a partir do qual se vai
        comecar a fazer a estatistica.
        anoFinal - é uma variavel do tipo int e nela é guardado o ultimo ano a partir do qual se vai
        acabar de fazer o grafico da estatistica.
        '''
        remuneracaoMaximaMensal1 = []
        for x in range(anoInicial, anoFinal):
            remuneracaoMaximaMensal1.append(remuneracaoMaximaMensal[x])
            
        
        plt.title("Remuneracao Maxima Mensal")
        plt.plot([remuneracaoMaximaMensal2 for remuneracaoMaximaMensal2 in remuneracaoMaximaMensal1])
        plt.xlabel("Ano")
        plt.ylabel("Remuneracao Maxima Mensal")
        plt.show()
        
        pass
    
    def estatistica_remuneracao_Maxima_Minima_A_Precos_Constantes(self, ipcGlobal ,remuneracaoMaximaMensal, remuneracaoMinimaMensal, 
                                                                  ano, anoInicial):
        '''
        Neste metodo vou realizar o grafico para a estatistica remuneracao maxima  e minima mensal a Precos Constantes. 
        remuneracaoMaximaAnual - nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes a remuneracao maxima  e minima mensal a Precos Constantes.
        ano -  nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao ano.
        anoInicial - é uma variavel do tipo int e nela é guardado o primeiro ano a partir do qual se vai
        comecar a fazer a estatistica.
        anoFinal - é uma variavel do tipo int e nela é guardado o ultimo ano a partir do qual se vai
        acabar de fazer o grafico da estatistica.
        '''
        self.remuneracao_Maxima_A_Precos_Constantes(ipcGlobal, remuneracaoMaximaMensal, anoInicial)
        self.remuneracao_Minima_A_Precos_Constantes(ipcGlobal, remuneracaoMinimaMensal, anoInicial)
        pass
        
    def remuneracao_Maxima_A_Precos_Constantes(self, ipcGlobal, remuneracaoMaximaMensal, anoInicial):
        '''
        Neste metodo vou realizar o grafico para a estatistica remuneracao maxima  mensal a Precos Constantes. 
        remuneracaoMaximaAnual - nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes a remuneracao maxima  mensal a Precos Constantes.
        ano -  nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao ano.
        anoInicial - é uma variavel do tipo int e nela é guardado o primeiro ano a partir do qual se vai
        comecar a fazer a estatistica.
        anoFinal - é uma variavel do tipo int e nela é guardado o ultimo ano a partir do qual se vai
        acabar de fazer o grafico da estatistica.
        '''
        emuneracao_Maxima_A_Precos_Constantes = []
	# Na linha abaixo pergunto ao utilizador qual o ano final da estatistica
        # os valores que o utilizador pode introduzir podem variar entre 0, que corresponde ao ano 1977
        # e 36 que corresponde ao ano 2007
        anoFinal = input("Indique o ano final(0, 32):")
        for x in range(anoInicial, anoFinal):
            emuneracao_Maxima_A_Precos_Constantes.append(remuneracaoMaximaMensal[x] / ipcGlobal[x])
            
        
        plt.title("Remuneracao Maxima Mensal Precos Constantes")
        plt.plot([remuneracao_Maxima_A_Precos_Constantes2 for 
                  remuneracao_Maxima_A_Precos_Constantes2 in emuneracao_Maxima_A_Precos_Constantes])
        plt.xlabel("Ano")
        plt.ylabel("Remuneracao Maxima Mensal Precos Constantes")
        plt.show()
       
        pass
        
    def remuneracao_Minima_A_Precos_Constantes(self, ipcGlobal, remuneracaoMinimaMensal, anoInicial):
        '''
        Neste metodo vou realizar o grafico para a estatistica remuneracao minima mensal a Precos Constantes. 
        remuneracaoMaximaAnual - nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes a remuneracao minima mensal a Precos Constantes.
        ano -  nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao ano.
        anoInicial - é uma variavel do tipo int e nela é guardado o primeiro ano a partir do qual se vai
        comecar a fazer a estatistica.
        anoFinal - é uma variavel do tipo int e nela é guardado o ultimo ano a partir do qual se vai
        acabar de fazer o grafico da estatistica.
        '''
        remuneracao_Minima_A_Precos_Constantes = []
        # Na linha abaixo pergunto ao utilizador qual o ano final da estatistica
        # os valores que o utilizador pode introduzir podem variar entre 0, que corresponde ao ano 1977
        # e 36 que corresponde ao ano 2007
        anoFinal = input("Indique o ano final(0, 32):")
        for x in range(anoInicial, anoFinal):
            remuneracao_Minima_A_Precos_Constantes.append(remuneracaoMinimaMensal[x] / ipcGlobal[x])
            
        plt.title("Remuneracao Minima Mensal Precos Constantes")
        plt.plot([remuneracao_Minima_A_Precos_Constantes2 for 
                  remuneracao_Minima_A_Precos_Constantes2 in remuneracao_Minima_A_Precos_Constantes])
        plt.xlabel("Ano")
        plt.ylabel("Remuneracao Minima Mensal Precos Constantes")
        plt.show()
        
        pass

    
    def estatistica_pib(self, pib, ano, anoInicial, anoFinal):
        '''
        Neste metodo vou realizar o grafico para a estatistica pib. 
        pib - nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao pib. 
        ano -  nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao ano.
        anoInicial - é uma variavel do tipo int e nela é guardado o primeiro ano a partir do qual se vai
        comecar a fazer a estatistica.
        anoFinal - é uma variavel do tipo int e nela é guardado o ultimo ano a partir do qual se vai
        acabar de fazer o grafico da estatistica.
        '''
        pib1 = []
        for x in range(anoInicial, anoFinal):
            pib1.append(pib[x])
        
        plt.title("PIB")
        plt.plot([pib2 for pib2 in pib1])
        plt.xlabel("Ano")
        plt.ylabel("PIB")
        plt.show()
        
        
        pass
    
    def estatistica_rendimento_Nacional_Bruto_Per_Capita(self, rendimentoNacionalBrutoPerCapita, ano, anoInicial, anoFinal):
        '''
        Neste metodo vou realizar o grafico para a estatistica rendimento nacional bruto per capita. 
        rendimentoNacionalBrutoPerCapita - nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao rendimento nacional bruto per capita. 
        ano -  nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao ano.
        anoInicial - é uma variavel do tipo int e nela é guardado o primeiro ano a partir do qual se vai
        comecar a fazer a estatistica.
        anoFinal - é uma variavel do tipo int e nela é guardado o ultimo ano a partir do qual se vai
        acabar de fazer o grafico da estatistica.
        '''
        rendimentoNacionalBrutoPerCapita1 = []
        for x in range(anoInicial, anoFinal):
            rendimentoNacionalBrutoPerCapita1.append(rendimentoNacionalBrutoPerCapita[x])
        
        plt.title("Rendimento Nacional Bruto Per Capita")
        plt.plot([rendimentoNacionalBrutoPerCapita2 for rendimentoNacionalBrutoPerCapita2
                  in rendimentoNacionalBrutoPerCapita1])
        plt.xlabel("Ano")
        plt.ylabel("Rendimento Nacional Bruto Per Capita")
        plt.show()
        

        pass
    
    def estatistica_rendimento_Disponivel_Bruto_Per_Capita(self, rendimentoDisponivelBrutoPerCapita, ano, anoInicial, anoFinal):
        '''
        Neste metodo vou realizar o grafico para a estatistica rendimento disponivel bruto per capita. 
        rendimentoDisponivelBrutoPerCapita - nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao rendimento disponivel bruto per capita. 
        ano -  nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao ano.
        anoInicial - é uma variavel do tipo int e nela é guardado o primeiro ano a partir do qual se vai
        comecar a fazer a estatistica.
        anoFinal - é uma variavel do tipo int e nela é guardado o ultimo ano a partir do qual se vai
        acabar de fazer o grafico da estatistica.
        '''
        rendimentoDisponivelBrutoPerCapita1 = []
        for x in range(anoInicial, anoFinal):
            rendimentoDisponivelBrutoPerCapita1.append(rendimentoDisponivelBrutoPerCapita[x])
        
        plt.title("Rendimento Disponivel Bruto Per Capita")
        plt.plot([rendimentoDisponivelBrutoPerCapita2 for rendimentoDisponivelBrutoPerCapita2 
                 in rendimentoDisponivelBrutoPerCapita1])
        plt.xlabel("Ano")
        plt.ylabel("Rendimento Disponivel Bruto Per Capita")
        plt.show()
        
            
        pass 
    
    def estatistica_rendimento_Per_Capita_Anual(self, remuneracaoPerCapitaAnual, ano, anoInicial, anoFinal):
        
        '''
        Neste metodo vou realizar o grafico para a estatistica Remuneracao per capita anual. 
        remuneracaoPerCapitaAnual - nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao Remuneracao per capita anual.  
        ano -  nesta variavel estao guardados o valores que foram retirado  a partir da consulta 
        a base de dados IPC_Portugal_1977_2013 correspondentes ao ano.
        anoInicial - é uma variavel do tipo int e nela é guardado o primeiro ano a partir do qual se vai
        comecar a fazer a estatistica.
        anoFinal - é uma variavel do tipo int e nela é guardado o ultimo ano a partir do qual se vai
        acabar de fazer o grafico da estatistica.
        '''
        
        remuneracaoPerCapitaAnual = []
        for x in range(anoInicial, anoFinal):
            remuneracaoPerCapitaAnual.append(rendimentoPerCapitaAnual[x])
        
    
        plt.title("Remuneracao Per Capita Anual")
        plt.plot([remuneracaoPerCapitaAnual for rendimentoPerCapitaAnual2 in rendimentoPerCapitaAnual1])
        plt.xlabel("Ano")
        plt.ylabel("Remuneracao Per Capita Anual")
        plt.show()
        pass

 
    
       
    
    
    
    
    
